package cliente_empresa
import planes.Plan

class Empresa(var clientes :List[Cliente]) {
  
  /**
   *  Agrega un cliente a la empresa
   */
  def addClientes(cliente :Cliente){
    this.clientes = cliente :: this.clientes;
  }
  
  /**
   *  Remueve un cliente de la empresa
   */
  def removeCliente(cliente :Cliente) = {
       var i = this.clientes.indexOf(cliente);
       this.clientes.drop(i);
  }
  
  /**
   *  Encuentra la mejor combinacion de planes a un cliente segun las llamadas de los ultimos 3 meses
   */
  def darMejorCombinacionDePlanes(client : Cliente, planesCombo : List[List[Plan]], mes1 :Int, mes2 :Int,mes3 :Int) : List[Plan] ={
    var list : List[(Double,List[Plan])]= List()
    var precio = 0.0
    for( planes <- planesCombo ){
        client.planes = planes
        precio = client.cuantoDebePagarEnMes(mes1) +  client.cuantoDebePagarEnMes(mes2) + client.cuantoDebePagarEnMes(mes3)
        list = (precio,planes) :: list
    }
    this.obtenerMejorCombo(list)
  }
  
  def obtenerMejorCombo(list : List[(Double,List[Plan])]) : List[Plan] ={
	  var menorPrecio :Double = list.first._1
	  var planes : List[Plan]= list.first._2
	  for((k,v) <- list){
	    if(k < menorPrecio){
	      menorPrecio = k
	      planes = v
	    }
	  }
	  planes
  }
 
}